Python-এর NumPy লাইব্রেরি অ্যারে (arrays) পরিচালনা এবং প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ একটি টুল। এর মাধ্যমে আমরা অ্যারে স্লাইসিং (slicing), ইনডেক্সিং (indexing), এবং ব্রডকাস্টিং (broadcasting) করতে পারি। এগুলি বিভিন্ন ধরনের ডেটা ম্যানিপুলেশনে অত্যন্ত কার্যকরী এবং কার্যকরী হতে সাহায্য করে।
১. Array Indexing
Indexing হল একটি অ্যারের নির্দিষ্ট উপাদান বা উপাদানগুলির অবস্থান শনাক্ত করার প্রক্রিয়া। NumPy অ্যারের মধ্যে ইনডেক্সিং করার জন্য অনেক ধরনের পদ্ধতি ব্যবহার করা যেতে পারে।
১.১ একটি একক উপাদান অ্যাক্সেস (Accessing a Single Element)
NumPy অ্যারে-এ একটি নির্দিষ্ট উপাদান অ্যাক্সেস করার জন্য সাধারণ Python এর ইনডেক্সিং ব্যবহার করা হয়। ইনডেক্সিং শূন্য (0) থেকে শুরু হয়।
উদাহরণ:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
# প্রথম উপাদান (ইনডেক্স 0)
print(arr[0]) # আউটপুট: 10
# পঞ্চম উপাদান (ইনডেক্স 4)
print(arr[4]) # আউটপুট: 50
১.২ নেগেটিভ ইনডেক্সিং (Negative Indexing)
NumPy ইনডেক্সিংয়ে নেগেটিভ ইনডেক্স ব্যবহার করলে, এটি অ্যারের শেষ থেকে গণনা করতে সাহায্য করে।
উদাহরণ:
# শেষ উপাদান (ইনডেক্স -1)
print(arr[-1]) # আউটপুট: 50
# শেষের আগে উপাদান (ইনডেক্স -2)
print(arr[-2]) # আউটপুট: 40
২. Array Slicing
Slicing হল একটি অ্যারের একটি উপসেট (subset) বা সাব-অ্যারে (sub-array) তৈরি করার প্রক্রিয়া। এটি start:stop:step ফরম্যাটে কাজ করে।
২.১ সাধারণ স্লাইসিং (Basic Slicing)
start: অ্যারের শুরু থেকে কতটা উপাদান নিয়ে শুরু করতে হবে।stop: অ্যারের শেষ পর্যন্ত কতটা উপাদান থাকতে হবে।step: কতটা ইন্টারভাল নিয়ে উপাদানগুলো নির্বাচন করা হবে।
উদাহরণ:
arr = np.array([10, 20, 30, 40, 50])
# প্রথম 3 উপাদান
print(arr[:3]) # আউটপুট: [10 20 30]
# 2য় থেকে 4র্থ উপাদান
print(arr[1:4]) # আউটপুট: [20 30 40]
# স্লাইসিং সহ স্টেপ
print(arr[::2]) # আউটপুট: [10 30 50]
২.২ নেগেটিভ স্লাইসিং (Negative Slicing)
স্লাইসিংয়ের ক্ষেত্রে নেগেটিভ ইনডেক্স ব্যবহার করা যেতে পারে, যা অ্যারের শেষ থেকে শুরু করবে।
উদাহরণ:
# শেষ 3 উপাদান
print(arr[-3:]) # আউটপুট: [30 40 50]
# 2য় থেকে 4র্থ উপাদান (নেগেটিভ ইনডেক্স)
print(arr[-4:-1]) # আউটপুট: [20 30 40]
৩. Array Broadcasting
Broadcasting হল NumPy-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা ভিন্ন আকারের অ্যারের মধ্যে অপারেশন করার সময় একে অপরের সাথে সামঞ্জস্য তৈরি করতে ব্যবহৃত হয়। এটি ছোট আকারের অ্যারে-কে বড় আকারের অ্যারের সাথে অপারেশন করার জন্য প্রসারিত করে।
NumPy এ broadcasting কিছু নিয়ম অনুসরণ করে:
- যদি একটি অ্যারের আকার অন্যটির চেয়ে ছোট হয়, তবে ছোট আকারের অ্যারেকে বড় আকারের অ্যারের সাথে মিলিয়ে তার আকার বাড়ানো হয়।
- অ্যারের আকারের তুলনা: যদি দুটি অ্যারের আকারে কিছু মিল থাকে (যেমন, একটি আকারের প্রথমমাত্রা অন্যটির শেষমাত্রার সাথে মিলে), তবে তারা broadcasting এর জন্য উপযুক্ত।
৩.১ Broadcasting উদাহরণ
উদাহরণ ১: Scalar এবং Vector
arr = np.array([10, 20, 30, 40])
scalar = 5
# Scalar value এর সাথে অ্যারে যোগ করা
print(arr + scalar) # আউটপুট: [15 25 35 45]
এখানে, scalar মান 5 অ্যারের প্রতিটি উপাদানের সাথে যোগ করা হয়েছে।
উদাহরণ ২: দুইটি ভিন্ন আকারের অ্যারে
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([10, 20])
# দুটি ভিন্ন আকারের অ্যারের অপারেশন
print(arr1 + arr2) # আউটপুট: [[11 22] [13 24]]
এখানে, arr2 অ্যারেটি broadcasting হয়ে arr1 অ্যারের আকারের সাথে সামঞ্জস্যপূর্ণ হয়েছে এবং তাদের মানগুলির সাথে যোগ করা হয়েছে।
৩.২ Broadcasting এর সীমাবদ্ধতা
Broadcasting শুধুমাত্র তখনই কাজ করবে যখন দুটি অ্যারের কিছু আকারের মান থাকবে যা একে অপরকে সামঞ্জস্যপূর্ণ করবে, এবং সেগুলি সামঞ্জস্যপূর্ণ হতে হবে। উদাহরণস্বরূপ, অ্যারের প্রথম এবং দ্বিতীয় মাত্রা যদি পৃথক হয় এবং কোনও সামঞ্জস্য না থাকে, তবে broadcasting কাজ করবে না।
অথবা:
arr1 = np.array([1, 2, 3])
arr2 = np.array([[1, 2], [3, 4]])
# এই অপারেশনটি broadcasting করতে ব্যর্থ হবে
# print(arr1 + arr2) # ValueError: operands could not be broadcast together with shapes
সারাংশ
- Indexing: NumPy অ্যারের নির্দিষ্ট উপাদান অ্যাক্সেস করার জন্য ব্যবহৃত হয়। সাধারণ ইনডেক্সিং এবং নেগেটিভ ইনডেক্সিং এর মাধ্যমে আপনি নির্দিষ্ট উপাদান নিতে পারেন।
- Slicing: অ্যারের একটি সাব-অ্যারে তৈরি করার জন্য স্লাইসিং ব্যবহার করা হয়। এটি start, stop, এবং step নির্দেশক সহ কাজ করে।
- Broadcasting: ছোট আকারের অ্যারে বড় আকারের অ্যারের সাথে অপারেশন করার জন্য প্রসারিত হয়, এবং এটি আপনাকে কম্পিউটেশনকে আরও দ্রুত এবং কার্যকরী করতে সহায়ক।
এই তিনটি বৈশিষ্ট্য NumPy অ্যারের সাথে কাজ করার জন্য অত্যন্ত গুরুত্বপূর্ণ এবং ডেটা বিশ্লেষণ ও গণনামূলক কাজে অনেক উপকারী।
Read more